#pragma once
#include "Channel.h"
#include "EventLoop.h"

#include <string>

// 在包含与被包含的时候，可以申明一下，gao'su
class EventLoop;
class Dispatcher
{
public:
    Dispatcher(EventLoop *eventLoop);

    virtual add();

    virtual int remove();

    virtual int modify();

    virtual int dispatch(int timeout = 2); // 单位秒

    virtual ~Dispatcher();
    inline void setChannel(Channel *channel)
    {
        m_channel = channel;
    }

protected:
    // channel 是会变化的 EvenLoop 是不变的
    // 事件循环
    std::string m_name = string();
    Channel *m_channel;
    EventLoop *m_eventLoop;
};